﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using SIGERP_Datos.Properties;
using System.Data;
using SIGERP_Entidades;

namespace SIGERP_Datos
{
    public class HndProvincias
    {
        public static List<Provincia> GetAll()
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT * FROM dbo.provincia");
            var provincias = new List<Provincia>();
            foreach (DataRow dtRow in tabla.Rows)
            {
                Provincia p = new Provincia(dtRow);
                p.pais = HndPaises.GetOne(Convert.ToInt32(dtRow["id_pais"]));
                provincias.Add(p);
            }
            return provincias;
        }

        public static bool verificarSiExiste(Provincia p)
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT COUNT(*) FROM dbo.provincia WHERE descripcion='" + p.descripcion + "' and id_pais= " + p.pais.id);
            DataRow dtRow = tabla.Rows[0];

            bool existe = false;
            if (Convert.ToInt32(dtRow[0]) > 0) existe = true;
            return existe;
        }

        public static List<Provincia> GetAllProvinciasPorPais(Pais p)
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT * FROM dbo.provincia where id_pais=" + p.id);
            var provincias = new List<Provincia>();
            foreach (DataRow dtRow in tabla.Rows)
            {
                Provincia pr = new Provincia(dtRow);
                pr.pais = HndPaises.GetOne(Convert.ToInt32(dtRow["id_pais"]));
                provincias.Add(pr);
            }
            return provincias;
        }

        public static Provincia GetOne(int id)
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT * FROM dbo.provincia WHERE id_provincia=" + id);
            DataRow dtRow = tabla.Rows[0];
            Provincia p = new Provincia(dtRow);
            p.pais = HndPaises.GetOne(Convert.ToInt32(dtRow["id_pais"]));
            return p;
        }

        public static void Insert(Provincia provincia)
        {

            SqlCommand comando = new SqlCommand();
            comando.CommandText = "INSERT INTO dbo.provincia(descripcion,id_pais) " + "VALUES (@descripcion,@id_pais)";
            comando.Parameters.AddWithValue("@descripcion", provincia.descripcion);
            comando.Parameters.AddWithValue("@id_pais", provincia.pais.id);
            Conexion.ejecutaComando(comando);
        }


        public static void Update(Provincia provincia)
        {

            SqlCommand comando = new SqlCommand();
            comando.CommandText = "UPDATE dbo.provincia SET descripcion=@descripcion, id_pais=@id_pais WHERE id_provincia=@id_provincia";
            comando.Parameters.AddWithValue("@descripcion", provincia.descripcion);
            comando.Parameters.AddWithValue("@id_pais", provincia.pais.id);
            comando.Parameters.AddWithValue("@id_provincia", provincia.id);

            Conexion.ejecutaComando(comando);
        }

        public static void Delete(Provincia provincia)
        {
            SqlCommand comando = new SqlCommand();
            comando.CommandText = "delete from provincia where id_provincia=" + provincia.id;

            Conexion.ejecutaComando(comando);
        }

        public static bool verificarSiHayCiudadesAsociadas(Provincia p)
        {
            DataTable tabla = Conexion.ejecutaSelect("SELECT COUNT(*) FROM dbo.ciudad WHERE id_provincia=" + p.id);
            DataRow dtRow = tabla.Rows[0];

            bool existe = false;
            if (Convert.ToInt32(dtRow[0]) > 0) existe = true;
            return existe;
        }
    }
}

